Deploy Bluebeam
Download MSI
The deployment strategy uses the MSI installer which can be downloaded from the Bluebeam Deployment support site
Action1
Command line preview: "Bluebeam Revu x64 21-8-0.zip\InstallRevu.ps1”
InstallRevu.ps1
Must set the target version.
Target Folder for Stamps is default location and can be customized for specific deployments.
NOTE: Running this for 21.8, I got an error from Action1 that the notification did not work and I got comlaints that Revu was "crashing" (meaning that people were not being warned as intended).
# ==========================
# CONFIG
# ==========================
$TargetVersion = "21.8.0" # set desired version here
$TimeoutSeconds = 60 # seconds before closing Revu
# ==========================
# Get the folder where the script is running (Action1 temp unzip folder)
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Definition
# Define MSI file paths relative to the script folder
$OCRInstaller = Join-Path $ScriptDir "BluebeamOCR x64 21.msi"
$RevuInstaller = Join-Path $ScriptDir "Bluebeam Revu x64 21.msi"
$PrefXML = Join-Path $ScriptDir "RevuPreferences.xml"
$SourceStamp = Join-Path $ScriptDir "StampExample.pdf"
$TargetFolder = "C:\ProgramData\Bluebeam Software\Bluebeam Revu\21\Stamps"
$TargetStamp = Join-Path $TargetFolder "StampExample.pdf"
function Get-InstalledBluebeam {
Get-ItemProperty "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*" -ErrorAction SilentlyContinue |
Where-Object { $_.DisplayName -like "Bluebeam Revu*" } |
Sort-Object DisplayVersion -Descending |
Select-Object -First 1 DisplayName, DisplayVersion
}
function Show-Message {
param(
[string]$Message,
[int]$Width = 420,
[int]$Height = 180,
[int]$Timeout = 0
)
Add-Type -AssemblyName System.Windows.Forms
$form = New-Object System.Windows.Forms.Form
$form.Text = "Bluebeam Update"
$form.Width = $Width
$form.Height = $Height
$form.StartPosition = "CenterScreen"
# Use a read-only textbox instead of label for proper wrapping
$textbox = New-Object System.Windows.Forms.TextBox
$textbox.Multiline = $true
$textbox.ReadOnly = $true
$textbox.WordWrap = $true
$textbox.ScrollBars = "Vertical"
$textbox.Text = $Message
$textbox.Width = $Width - 40
$textbox.Height = $Height - 80
$textbox.Top = 20
$textbox.Left = 20
$textbox.BorderStyle = "None"
$textbox.BackColor = $form.BackColor
$textbox.TabStop = $false
$form.Controls.Add($textbox)
if ($Timeout -gt 0) {
$timer = New-Object System.Windows.Forms.Timer
$timer.Interval = $Timeout * 1000
$timer.Add_Tick({ $form.Close() })
$timer.Start()
}
$null = $form.ShowDialog()
}
function Install-MSI {
param ([string]$MSIPath)
if (-not (Test-Path $MSIPath)) {
Write-Output "ERROR: File not found -> $MSIPath"
return $false
}
Write-Output "Installing: $MSIPath"
Start-Process msiexec.exe -ArgumentList "/i `"$MSIPath`" DISABLE_WELCOME=1 BBREVU_PREFERENCES=`"$PrefXML`" /qn /norestart" -Wait
$exitCode = $LASTEXITCODE
if ($exitCode -eq 0) {
Write-Output "SUCCESS: Installed $MSIPath"
return $true
} else {
Write-Output "ERROR: Installation failed for $MSIPath (exit code $exitCode)"
return $false
}
}
# ==========================
# MAIN LOGIC
# ==========================
$Installed = Get-InstalledBluebeam
if ($Installed -and ([version]$Installed.DisplayVersion -ge [version]$TargetVersion)) {
Write-Output "Bluebeam Revu $TargetVersion or newer already installed. Exiting."
exit 0
}
# Notify user before update
Show-Message -Message "Bluebeam will be updated to version $TargetVersion.
Please save your work. The application will close in $TimeoutSeconds seconds." -Timeout $TimeoutSeconds
# Kill Bluebeam if running
Get-Process "Revu" -ErrorAction SilentlyContinue | ForEach-Object {
$_.CloseMainWindow()
Start-Sleep -Seconds 5
if (-not $_.HasExited) { $_.Kill() }
}
# Run installs
$OCRResult = Install-MSI -MSIPath $OCRInstaller
$RevuResult = Install-MSI -MSIPath $RevuInstaller
if ($OCRResult -and $RevuResult) {
Show-Message -Message "Bluebeam Revu has been updated to version $TargetVersion successfully."
Write-Output "Bluebeam Revu $TargetVersion installed successfully."
exit 0
} else {
Show-Message -Message "Bluebeam Revu update failed. Please contact IT support."
Write-Output "One or more installations failed."
exit 1
}
# Copy submittal PDF stamp
try {
if (-not (Test-Path $TargetFolder)) {
New-Item -Path $TargetFolder -ItemType Directory -Force | Out-Null
Write-Output "Created target stamps folder: $TargetFolder"
}
if (Test-Path $SourceStamp) {
Copy-Item -Path $SourceStamp -Destination $TargetStamp -Force
Write-Output "Stamp deployed: $TargetStamp"
}
else {
Write-Output "WARNING: Submittal_Dynamic_dAG.pdf not found in package."
}
}
catch {
Write-Output "ERROR: Failed to copy stamp -> $_"
}
RevuPreferences.xml
Spell Check Dictionary:
<RevuPreferenceDictionary Version="2">
<Spelling>
<CheckUppercase>True</CheckUppercase>
<CustomWordCounten-us>138</CustomWordCounten-us>
<CustomWorden-us0>Brookings</CustomWorden-us0>
<CustomWorden-us1>BROOKINGS</CustomWorden-us1>
<CustomWorden-us10>REQ'D</CustomWorden-us10>
<CustomWorden-us100>STRUCT</CustomWorden-us100>
<CustomWorden-us101>EPDM</CustomWorden-us101>
<CustomWorden-us102>POLYISO</CustomWorden-us102>
<CustomWorden-us103>MONOSLOPE</CustomWorden-us103>
<CustomWorden-us104>POLY</CustomWorden-us104>
<CustomWorden-us105>PRE</CustomWorden-us105>
<CustomWorden-us106>ADDN</CustomWorden-us106>
<CustomWorden-us107>THRU</CustomWorden-us107>
<CustomWorden-us108>SIGNAGE</CustomWorden-us108>
<CustomWorden-us109>DIAG</CustomWorden-us109>
<CustomWorden-us11>occ</CustomWorden-us11>
<CustomWorden-us110>CMU</CustomWorden-us110>
<CustomWorden-us111>WYTHE</CustomWorden-us111>
<CustomWorden-us112>PRECAST</CustomWorden-us112>
<CustomWorden-us113>SAFETY</CustomWorden-us113>
<CustomWorden-us114>FS</CustomWorden-us114>
<CustomWorden-us115>BACKSPLASHES</CustomWorden-us115>
<CustomWorden-us116>ORD</CustomWorden-us116>
<CustomWorden-us117>STS</CustomWorden-us117>
<CustomWorden-us118>EQ</CustomWorden-us118>
<CustomWorden-us119>RODSTOCK</CustomWorden-us119>
<CustomWorden-us12>Unconcentrated</CustomWorden-us12>
<CustomWorden-us120>STO</CustomWorden-us120>
<CustomWorden-us121>TBD</CustomWorden-us121>
<CustomWorden-us122>LUMIDECK</CustomWorden-us122>
<CustomWorden-us123>INFILT</CustomWorden-us123>
<CustomWorden-us124>MOULDING</CustomWorden-us124>
<CustomWorden-us125>PREFIN</CustomWorden-us125>
<CustomWorden-us126>MANUF</CustomWorden-us126>
<CustomWorden-us127>EPS</CustomWorden-us127>
<CustomWorden-us128>RADIUSED</CustomWorden-us128>
<CustomWorden-us129>PAINTABLE</CustomWorden-us129>
<CustomWorden-us13>ELEV'S</CustomWorden-us13>
<CustomWorden-us130>FP</CustomWorden-us130>
<CustomWorden-us131>FG</CustomWorden-us131>
<CustomWorden-us132>NL</CustomWorden-us132>
<CustomWorden-us133>SIDELITE</CustomWorden-us133>
<CustomWorden-us134>OVHD</CustomWorden-us134>
<CustomWorden-us135>SHGC</CustomWorden-us135>
<CustomWorden-us136>CURTAINWALL</CustomWorden-us136>
<CustomWorden-us137>LOCKSET</CustomWorden-us137>
<CustomWorden-us14>Wheelstop</CustomWorden-us14>
<CustomWorden-us15>MAT'L</CustomWorden-us15>
<CustomWorden-us16>MAPES</CustomWorden-us16>
<CustomWorden-us17>DIM'S</CustomWorden-us17>
<CustomWorden-us18>LLC</CustomWorden-us18>
<CustomWorden-us19>EOR</CustomWorden-us19>
<CustomWorden-us2>designArc</CustomWorden-us2>
<CustomWorden-us20>SCHOENEMAN</CustomWorden-us20>
<CustomWorden-us21>ASPERHEIM</CustomWorden-us21>
<CustomWorden-us22>SWPPP</CustomWorden-us22>
<CustomWorden-us23>ANC</CustomWorden-us23>
<CustomWorden-us24>APC</CustomWorden-us24>
<CustomWorden-us25>BD</CustomWorden-us25>
<CustomWorden-us26>BLK</CustomWorden-us26>
<CustomWorden-us27>BLKG</CustomWorden-us27>
<CustomWorden-us28>BRG</CustomWorden-us28>
<CustomWorden-us29>CLG</CustomWorden-us29>
<CustomWorden-us3>DESIGNARC</CustomWorden-us3>
<CustomWorden-us30>CLR</CustomWorden-us30>
<CustomWorden-us31>CONC</CustomWorden-us31>
<CustomWorden-us32>CPT</CustomWorden-us32>
<CustomWorden-us33>DET</CustomWorden-us33>
<CustomWorden-us34>DIA</CustomWorden-us34>
<CustomWorden-us35>DISP</CustomWorden-us35>
<CustomWorden-us36>DN</CustomWorden-us36>
<CustomWorden-us37>DS</CustomWorden-us37>
<CustomWorden-us38>DW</CustomWorden-us38>
<CustomWorden-us39>DWL</CustomWorden-us39>
<CustomWorden-us4>designArcGroup</CustomWorden-us4>
<CustomWorden-us40>DWG</CustomWorden-us40>
<CustomWorden-us41>ELEC</CustomWorden-us41>
<CustomWorden-us42>EXST</CustomWorden-us42>
<CustomWorden-us43>FDN</CustomWorden-us43>
<CustomWorden-us44>FTG</CustomWorden-us44>
<CustomWorden-us45>FURR</CustomWorden-us45>
<CustomWorden-us46>GALV</CustomWorden-us46>
<CustomWorden-us47>GWB</CustomWorden-us47>
<CustomWorden-us48>GWC</CustomWorden-us48>
<CustomWorden-us49>HORIZ</CustomWorden-us49>
<CustomWorden-us5>designarcgroup</CustomWorden-us5>
<CustomWorden-us50>HTG</CustomWorden-us50>
<CustomWorden-us51>HVAC</CustomWorden-us51>
<CustomWorden-us52>INSUL</CustomWorden-us52>
<CustomWorden-us53>JB</CustomWorden-us53>
<CustomWorden-us54>JST</CustomWorden-us54>
<CustomWorden-us55>JT</CustomWorden-us55>
<CustomWorden-us56>LAV</CustomWorden-us56>
<CustomWorden-us57>LTG</CustomWorden-us57>
<CustomWorden-us58>LWCMU</CustomWorden-us58>
<CustomWorden-us59>MECH</CustomWorden-us59>
<CustomWorden-us6>Brookings</CustomWorden-us6>
<CustomWorden-us60>MTL</CustomWorden-us60>
<CustomWorden-us61>MF</CustomWorden-us61>
<CustomWorden-us62>MTD</CustomWorden-us62>
<CustomWorden-us63>NOM</CustomWorden-us63>
<CustomWorden-us64>PLAS</CustomWorden-us64>
<CustomWorden-us65>PLYWD</CustomWorden-us65>
<CustomWorden-us66>PNT</CustomWorden-us66>
<CustomWorden-us67>REFL</CustomWorden-us67>
<CustomWorden-us68>REINF</CustomWorden-us68>
<CustomWorden-us69>REQ</CustomWorden-us69>
<CustomWorden-us7>designarcgroup</CustomWorden-us7>
<CustomWorden-us70>RESIL</CustomWorden-us70>
<CustomWorden-us71>SCHED</CustomWorden-us71>
<CustomWorden-us72>SHR</CustomWorden-us72>
<CustomWorden-us73>SHT</CustomWorden-us73>
<CustomWorden-us74>SHTG</CustomWorden-us74>
<CustomWorden-us75>STL</CustomWorden-us75>
<CustomWorden-us76>STR</CustomWorden-us76>
<CustomWorden-us77>SUSP</CustomWorden-us77>
<CustomWorden-us78>SYM</CustomWorden-us78>
<CustomWorden-us79>TYP</CustomWorden-us79>
<CustomWorden-us8>'X</CustomWorden-us8>
<CustomWorden-us80>UNF</CustomWorden-us80>
<CustomWorden-us81>WO</CustomWorden-us81>
<CustomWorden-us82>WD</CustomWorden-us82>
<CustomWorden-us83>WDTH</CustomWorden-us83>
<CustomWorden-us84>Ψ</CustomWorden-us84>
<CustomWorden-us85>DRAFTSTOPPING</CustomWorden-us85>
<CustomWorden-us86>FEC</CustomWorden-us86>
<CustomWorden-us87>IBC</CustomWorden-us87>
<CustomWorden-us88>PERIM</CustomWorden-us88>
<CustomWorden-us89>NONSPRINKLER</CustomWorden-us89>
<CustomWorden-us9>Aa</CustomWorden-us9>
<CustomWorden-us90>FSD</CustomWorden-us90>
<CustomWorden-us91>BUILDOUT</CustomWorden-us91>
<CustomWorden-us92>IECC</CustomWorden-us92>
<CustomWorden-us93>IFC</CustomWorden-us93>
<CustomWorden-us94>GFA</CustomWorden-us94>
<CustomWorden-us95>STC</CustomWorden-us95>
<CustomWorden-us96>ATTEN</CustomWorden-us96>
<CustomWorden-us97>BATT</CustomWorden-us97>
<CustomWorden-us98>EIFS</CustomWorden-us98>
<CustomWorden-us99>POLYVAPOR</CustomWorden-us99>
</Spelling>
</RevuPreferenceDictionary>